#ifndef __STACK_H__
#define __STACK_H__

typedef struct _Stack
{
  char *stack;
  int size; /* In terms of items, not bytes */
  int top; /* In terms of items, not bytes */
  int mem_size;
} Stack;

void stack_create (Stack *stack, int mem_size);
void stack_destroy (Stack *stack);
void * stack_top (Stack *stack);
void stack_push (Stack *stack, void *item);
void stack_pop (Stack *stack);

static void stack_resize (Stack *stack);

#endif
